<?php
//判断用户是否登录
require './init.php';

//假设当前已登录的用户ID为1
$user_id = 1;

//根据用户id拼接头像文件保存路径
$photo = "./uploads/thumb_$user_id.jpg";

//利用<pre>标签使输出的内容含有空格和换行
//echo '<pre>';
//print_r($_FILES); //输出获取的上传文件信息
//exit('</pre>');

//判断是否上传头像
if(isset($_FILES['pic'])){
	//获取用户上传文件信息
	$pic = $_FILES['pic'];
 	//判断文件上传到临时文件时是否出错
	if($pic['error'] > 0){
		$error = '上传失败：';
		switch($pic['error']){
 			case 1: $error .= '文件大小超过了服务器设置的限制！';break;
			case 2: $error .= '文件大小超过了表单设置的限制！'; break;
			case 3: $error .= '文件只有部分被上传！'; break;
			case 4: $error .= '没有文件被上传！'; break;
			case 6: $error .= '上传文件临时目录不存在！'; break;
			case 7: $error .= '文件写入失败！'; break;
			default: $error .='未知错误！'; break; 
		}
		exit($error);  //显示错误信息并停止脚本
	}
	//-----------------------
	//上传成功，继续操作……
	//-----------------------
	//方式一：字符串截取上传文件的扩展名
	$type = strrchr($pic['name'],'.');
	if($type !== '.jpg'){
		exit('图像类型不符合要求，只支持jpg类型的图片');
	}
	//方式二：通过文件的MIME信息进行判断
	if($pic['type'] !== 'image/jpeg'){
		exit('图像类型不符合要求，只支持jpg类型的图片');
	}
	//-----------------------
	//符合上传格式要求，保存图片……
	//-----------------------
	//准备上传文件的保存路径，通过用户的id为头像命名
	$save_path = "./uploads/$user_id.jpg";
	//将上传文件从临时目录移动到项目目录
	if(!move_uploaded_file($pic['tmp_name'], $save_path)){
		exit('上传文件保存失败！');
	}
	//-----------------------
	//保存成功，为头像生成缩略图……
	//-----------------------
	//通过getimagesize()获取图像信息
	//该函数参数接收图片文件的路径，返回值为图像信息数组
	//在图像信息数组中，前两个数组元素保存了图片的宽度和高度
	list($width, $height) = getimagesize($save_path);
	//定义缩略图的最大宽度和最大高度（150*150）
	$maxwidth = $maxheight = 150;
	//等比例计算缩略图的宽和高
	if($width/$maxwidth > $height/$maxheight) {
		//宽度大于高度时，将宽度限制为最大宽度，然后计算高度值
		$newwidth = $maxwidth;
		$newheight = round($newwidth / $width * $height);
	}else{
		//高度大于宽度时，将高度限制为最大高度，然后计算宽度值
		$newheight = $maxheight;
		$newwidth = round($newheight / $height * $width);
	}
	//绘制缩略图的画布资源
	//下面的函数用于创建画布，参数为画布的宽度值和高度值
	$thumb = imagecreatetruecolor($newwidth, $newheight);
	//从文件中读取出图像，创建为jpeg格式的图像资源
	$source = imagecreatefromjpeg($save_path);
	//将原图缩放填充到缩略图画布中
	// 参数 $thumb 表示目标图像
	// 参数 $source 表示原图像
	// 参数 0,0,0,0 分别表示目标点的x坐标和y坐标，源点的x坐标和y坐标
	// 参数 $newwidth 表示目标图像的宽
	// 参数 $newheight 表示目标图像的高
	// 参数 $width 表示原图像的宽
	// 参数 $height 表示原图像的高
	imagecopyresized($thumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height);
	//将保存缩略图到指定目录（参数依次为图像资源、保存目录、输出质量0~100）
	imagejpeg($thumb, $photo, 100);
}

//载入HTML模板文件
require './photo.html';